The software development lifecycle typically comprises of four distinct phases—requirement collection, design, coding and testing. Testing is the phase where the code of a software product is tested for defects. The defects, if any, may be fixed and retested before releasing the software product. However, testing may not detect all the defects present in the software and there may be defects present within the software product. Two major causes of this may be insufficiency in the test cases and insufficiency in test coverage, and understanding gaps among the persons performing the testing, tester errors and so on.
This may cause issues to both the organization developing the product and the users. These issues may be in terms of customer satisfaction, monetary losses to organizations and so on. Also, fixing defects is a costly and time consuming task as it requires multiple teams (support, development, testing teams and so on) to come together and resolve the defect.